گاهی اوقات ممکن است به دلایل امنیتی یا آموزشی، بخواهید دستوری خاص را غیرفعال کنید
تا کاربر نتواند از آن استفاده کند. مثلاً غیرفعال کردن cd برای اینکه کاربر نتواند
بین دایرکتوریها جابجا شود.
غیرفعال کردن یک دستور، به خصوص cd، کاربر را محدود میکند
و ممکن است تجربه کاربری را مختل کند. این کار بیشتر در محیطهای آموزشی
یا چالشهای CTF استفاده میشود.
با استفاده از alias میتوانید cd را به دستور دیگری
(مثلاً echo) متصل کنید.
توضیح: با این کار، هر بار که کاربر cd را اجرا کند، پیام هشدار نمایش داده میشود.
این روش فقط برای جلسه فعلی معتبر است و پس از بستن ترمینال، cd
به حالت عادی برمیگردد. برای دائمی کردن، alias را به ~/.zshrc اضافه کنید.
میتوانید فایل اجرایی cd را با یک اسکریپت جایگزین کنید.
توضیح: فایل اصلی cd را تغییر نام میدهیم و یک اسکریپت جدید به جای آن قرار میدهیم.
این روش نیاز به دسترسی روت (sudo) دارد و اگر اشتباه انجام شود،
ممکن است سیستم شما دچار مشکل شود. همچنین cd یک دستور داخلی (built-in)
است و فایل اجرایی جداگانهای در /usr/bin ندارد! این روش فقط برای دستورات خارجی کار میکند.
در Zsh، میتوانید با دستور disable یک دستور داخلی را غیرفعال کنید.
توضیح: با disable cd، دستور cd به طور کامل غیرفعال میشود
و خطای command not found نمایش داده میشود.
برای فعال کردن مجدد cd از دستور enable cd استفاده کنید:
اگر cd یک دستور خارجی بود، میتوانستید آن را از PATH حذف کنید.
اما چون cd یک دستور داخلی (built-in) است، این روش کار نمیکند.
cd، echo، pwd
که داخل خود شل ساخته شدهاند و فایل جداگانهای ندارند.ls، grep، find
که در /usr/bin یا /bin قرار دارند.| روش | موقتی/دائمی | نیاز به روت | قابلیت بازگشت | سطح سختی |
|---|---|---|---|---|
| alias | موقتی (قابل دائمی کردن) | ❌ خیر | ✅ آسان (با unalias) |
⭐ ساده |
| disable (Zsh) | موقتی (تا پایان جلسه) | ❌ خیر | ✅ آسان (با enable) |
⭐ ساده |
| تغییر فایل اجرایی | دائمی | ✅ بله | ⚠️ متوسط (نیاز به restore) | ⭐⭐ متوسط |
| حذف از PATH | دائمی (برای دستورات خارجی) | ✅ بله | ⚠️ متوسط | ⭐⭐ متوسط |
cd کاربر را محدود میکند و ممکن است باعث سردرگمی شود.enable یا unalias آن را برگردانند.~/.zshrc) اعمال کنید.
بهترین روش برای غیرفعال کردن cd در Zsh، استفاده از دستور disable است
زیرا:
enable).disable cd دستور cd را غیرفعال کنید و سعی کنید به دایرکتوری دیگری بروید.enable cd آن را مجدداً فعال کنید.alias یک پیام سفارشی به جای cd قرار دهید.disable را روی دستور ls هم امتحان کنید.